package com.fyg.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fyg.domain.ResponseResult;
import com.fyg.domain.Tag;
import com.fyg.dto.TagListDto;
import com.fyg.dto.TagVo;
import com.fyg.mapper.TagMapper;
import com.fyg.service.ITagService;
import com.fyg.utils.BeanCopyUtils;
import com.fyg.vo.PageVo;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import java.util.List;

/**
 * <p>
 * 标签 服务实现类
 * </p>
 *
 * @author czx
 * @since 2024-11-14
 */
@Service
public class TagServiceImpl extends ServiceImpl<TagMapper, Tag> implements ITagService {
    @Override
    public ResponseResult<PageVo> pageTagList(Integer pageNum, Integer pageSize, TagListDto tagListDto) {
        //分页查询的条件。模糊+分页
        LambdaQueryWrapper<Tag> queryWrapper = new LambdaQueryWrapper<>();
        // 如果 name 不为空，则使用 name 进行查询
        if (StringUtils.hasText(tagListDto.getName())) {
            queryWrapper.like(Tag::getName, tagListDto.getName());
        }
        // 如果 remark 不为空，则使用 remark 进行查询
        else if (StringUtils.hasText(tagListDto.getRemark())) {
            queryWrapper.like(Tag::getRemark, tagListDto.getRemark());
        }
        Page<Tag> page = new Page<>();
        page.setCurrent(pageNum);
        page.setSize(pageSize);
        page(page,queryWrapper);
        //封装数据返回。PageVo是我们在huanf-framework工程写的类
        PageVo pageVo = new PageVo(page.getRecords(),page.getTotal());
        return ResponseResult.okResult(pageVo);
    }

    @Override
    public List<TagVo> listAllTag() {
        LambdaQueryWrapper<Tag> wrapper = new LambdaQueryWrapper<>();
        wrapper.select(Tag::getId,Tag::getName);
        List<Tag> list = list(wrapper);
        List<TagVo> tagVos = BeanCopyUtils.copyBeanList(list, TagVo.class);
        return tagVos;
    }
}
